<?
/*function showmsg($msg, $title = '', $url_forward = '', $extra = ''){
	
	if ($url_forward == 'return'){
		$url_forward ='javascript:history.back()';
		
	}else{
		//echo "<a href=\"$url_forward\">$extra</a>";
	}
	
	echo "<DIV class=\"TB_overlayBG\" id=\"TB_overlay\" style=\"HEIGHT: 700px;DISPLAY:block;\" ></DIV>\n<div class=\"msg\" id=TB_window style=\"padding-top:16px;MARGIN-TOP: 0px; DISPLAY:block;MARGIN-LEFT: -215px; height:100px;WIDTH:430px;\">\n\t<div class=\"title\"><img src=\"/images/info.gif\" width=\"14\" height=\"14\"> {$title}\n\t</div>\n\t<div class=\"content\">信息内容：{$msg}[<a href=\"$url_forward\">$extra</a>]</div>\n</div>";
	
	exit();
}*/
function showmsg($msg, $title = '管理 - 提示信息',$gourl,$extra = '',$onlymsg=0,$limittime=0)
{
	  global $dsql,$dbcharset;
	  if( stristr($cfg_ver_lang,"gb") ) $cfg_ver_lang = 'gb2312';
		$htmlhead  = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset={$dbcharset}\" />
<title> $title </title>
<script src=\"images/function.js\" type=\"text/javascript\"></script>
<link href=\"images/style.css\" rel=\"stylesheet\" type=\"text/css\">\r\n
";
		$htmlhead .= "<base target='_self'/>\r\n</head>\r\n<body leftmargin='0' topmargin='0'>\r\n<center>\r\n<script>\r\n";
		$htmlfoot  = "</script>\r\n</center>\r\n</body>\r\n</html>\r\n";

		if($limittime==0) $litime = 2000;
		else $litime = $limittime;

		if($gourl=="-1" || $gourl=="return" ){
			if($limittime==0) $litime = 2000;
			$gourl = "javascript:history.go(-1);";
		}

		if($gourl==""||$onlymsg==1){
			$msg = "<script>alert(\"".str_replace("\"","\\\"",$msg)."\");</script>";
		}else{
			$func = "      var pgo=0;
      function JumpUrl(){
        if(pgo==0){ location='$gourl'; pgo=1; }
      }\r\n";
			$rmsg = $func;
			$rmsg .= "document.write(\"<br/><div style='margin-top:20%;width:400px;padding-top:4px;height:25px;font-size:10pt;border-left:1px solid #547ac7;border-top:1px solid #547ac7;border-right:1px solid #547ac7;background-color:#668cd8;'>系统提示信息：</div>\");\r\n";
			$rmsg .= "document.write(\"<div style='width:400px;height:100;font-size:10pt;border:1px solid #547ac7;background-color:#f3f3fc'><br/><br/>\");\r\n";
			$rmsg .= "document.write(\"".str_replace("\"","\\\"",$msg)."\");\r\n";
			$rmsg .= "document.write(\"";
			if($onlymsg==0){
				if($gourl!="javascript:;" && $gourl!=""){ $rmsg .= "<br/><br/><a href='".$gourl."'>如果你的浏览器没反应，请点击这里...</a>"; }
				$rmsg .= "<br/><br/></div>\");\r\n";
				if($gourl!="javascript:;" && $gourl!=""){ $rmsg .= "setTimeout('JumpUrl()',$litime);"; }
			}else{ $rmsg .= "<br/><br/></div>\");\r\n"; }
			$msg  = $htmlhead.$rmsg.$htmlfoot;
		}
		if(isset($dsql) && is_object($dsql)) @$dsql->Close();
		echo $msg;
		exit();
}

/**
 * 操纵文件类
 * 
 * 例子：
 * FileUtil::createDir('a/1/2/3');                    测试建立文件夹    建一个a/1/2/3文件夹
 * FileUtil::createFile('b/1/2/3');                    测试建立文件        在b/1/2/文件夹下面建一个3文件
 * FileUtil::createFile('b/1/2/3.exe');                测试建立文件        在b/1/2/文件夹下面建一个3.exe文件
 * FileUtil::copyDir('b','d/e');                    测试复制文件夹    建立一个d/e文件夹，把b文件夹下的内容复制进去
 * FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe');    测试复制文件        建立一个b/b文件夹，并把b/1/2文件夹中的3.exe文件复制进去
 * FileUtil::moveDir('a/','b/c');                    测试移动文件夹    建立一个b/c文件夹,并把a文件夹下的内容移动进去，并删除a文件夹
 * FileUtil::moveFile('b/1/2/3.exe','b/d/3.exe');    测试移动文件        建立一个b/d文件夹，并把b/1/2中的3.exe移动进去                    
 * FileUtil::unlinkFile('b/d/3.exe');                测试删除文件        删除b/d/3.exe文件
 * FileUtil::unlinkDir('d');                        测试删除文件夹    删除d文件夹
 */

class FileUtil {
    /**
     * 建立文件夹
     *
     * @param    string $aimUrl
     * @return    viod
     */
    function createDir($aimUrl) {
        $aimUrl = str_replace('', '/', $aimUrl);
        $aimDir = '';
        $arr = explode('/', $aimUrl);
        foreach ($arr as $str) {
            $aimDir .= $str . '/';
            if (!file_exists($aimDir)) {
                mkdir($aimDir);
            }
        }
    }

    /**
     * 建立文件
     *
     * @param    string    $aimUrl 
     * @param    boolean    $overWrite 该参数控制是否覆盖原文件
     * @return    boolean
     */
    function createFile($aimUrl, $overWrite = false) {
        if (file_exists($aimUrl) && $overWrite == false) {
            return false;
        } elseif (file_exists($aimUrl) && $overWrite == true) {
            FileUtil::unlinkFile($aimUrl);
        }
        $aimDir = dirname($aimUrl);
        FileUtil::createDir($aimDir);
        touch($aimUrl);
        return true;
    }

    /**
     * 移动文件夹
     *
     * @param    string    $oldDir
     * @param    string    $aimDir
     * @param    boolean    $overWrite 该参数控制是否覆盖原文件
     * @return    boolean
     */
    function moveDir($oldDir, $aimDir, $overWrite = false) {
        $aimDir = str_replace('', '/', $aimDir);
        $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';
        $oldDir = str_replace('', '/', $oldDir);
        $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/';
        if (!is_dir($oldDir)) {
            return false;
        }
        if (!file_exists($aimDir)) {
            FileUtil::createDir($aimDir);
        }
        @$dirHandle = opendir($oldDir);
        if (!$dirHandle) {
            return false;
        }
        while(false !== ($file = readdir($dirHandle))) {
            if ($file == '.' || $file == '..') {
                continue;
            }
            if (!is_dir($oldDir.$file)) {
                FileUtil::moveFile($oldDir . $file, $aimDir . $file, $overWrite);
            } else {
                FileUtil::moveDir($oldDir . $file, $aimDir . $file, $overWrite);
            }
        }
        closedir($dirHandle);
        return rmdir($oldDir);
    }

    /**
     * 移动文件
     *
     * @param    string    $fileUrl
     * @param    string    $aimUrl
     * @param    boolean    $overWrite 该参数控制是否覆盖原文件
     * @return    boolean
     */
    function moveFile($fileUrl, $aimUrl, $overWrite = false) {
        if (!file_exists($fileUrl)) {
            return false;
        }
        if (file_exists($aimUrl) && $overWrite = false) {
            return false;
        } elseif (file_exists($aimUrl) && $overWrite = true) {
            FileUtil::unlinkFile($aimUrl);
        }
        $aimDir = dirname($aimUrl);
        FileUtil::createDir($aimDir);
        rename($fileUrl, $aimUrl);
        return true;
    }

    /**
     * 删除文件夹
     *
     * @param    string    $aimDir
     * @return    boolean
     */
    function unlinkDir($aimDir) {
        $aimDir = str_replace('', '/', $aimDir);
        $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
        if (!is_dir($aimDir)) {
            return false;
        }
        $dirHandle = opendir($aimDir);
        while(false !== ($file = readdir($dirHandle))) {
            if ($file == '.' || $file == '..') {
                continue;
            }
            if (!is_dir($aimDir.$file)) {
                FileUtil::unlinkFile($aimDir . $file);
            } else {
                FileUtil::unlinkDir($aimDir . $file);
            }
        }
        closedir($dirHandle);
        return rmdir($aimDir);
    }

    /**
     * 删除文件
     *
     * @param    string    $aimUrl
     * @return    boolean
     */
    function unlinkFile($aimUrl) {
        if (file_exists($aimUrl)) {
            unlink($aimUrl);
            return true;
        } else {
            return false;
        }
    }

    /**
     * 复制文件夹
     *
     * @param    string    $oldDir
     * @param    string    $aimDir
     * @param    boolean    $overWrite 该参数控制是否覆盖原文件
     * @return    boolean
     */
    function copyDir($oldDir, $aimDir, $overWrite = false) {
        $aimDir = str_replace('', '/', $aimDir);
        $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
        $oldDir = str_replace('', '/', $oldDir);
        $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/';
        if (!is_dir($oldDir)) {
            return false;
        }
        if (!file_exists($aimDir)) {
            FileUtil::createDir($aimDir);
        }
        $dirHandle = opendir($oldDir);
        while(false !== ($file = readdir($dirHandle))) {
            if ($file == '.' || $file == '..') {
                continue;
            }
            if (!is_dir($oldDir . $file)) {
                FileUtil::copyFile($oldDir . $file, $aimDir . $file, $overWrite);
            } else {
                FileUtil::copyDir($oldDir . $file, $aimDir . $file, $overWrite);
            }
        }
        return closedir($dirHandle);
    }

    /**
     * 复制文件
     *
     * @param    string    $fileUrl
     * @param    string    $aimUrl
     * @param    boolean    $overWrite 该参数控制是否覆盖原文件
     * @return    boolean
     */
    function copyFile($fileUrl, $aimUrl, $overWrite = false) {
        if (!file_exists($fileUrl)) {
            return false;
        }
        if (file_exists($aimUrl) && $overWrite == false) {
            return false;
        } elseif (file_exists($aimUrl) && $overWrite == true) {
            FileUtil::unlinkFile($aimUrl);
        }
        $aimDir = dirname($aimUrl);
        FileUtil::createDir($aimDir);
        copy($fileUrl, $aimUrl);
        return true;
    }
}
//根据数组，返回缩进级别
function get_sort($arr,$pid=0,$level=0){
	foreach($arr as $k=>$v)
	{
		if($v['pid']==$pid){
			$ress[$k]=$v;
			$ress[$k]['level'] =$level;
			$ress[$k]['sub'] = get_sort($arr,$v['id'],$level+1);
		}		
	}
	return $ress;
}
/*
数组内容转换成option
*/
function get_o($arr){
	if($arr['sub']){
		$str = array_map('get_o',$arr['sub']);
		$str = implode("\n",$str);
	}
	$arr['level'] = str_repeat("&nbsp;-", $arr['level']);
	
	return "<option value=$arr[id] $arr[selected]>{$arr[level]}{$arr[name]}</option>\n\t".$str;
}
/*
得到所有分类列表
*/
function cat_list($cat_id = 0, $selected = 0, $select_name='',$type='')
{
global $db,$tablepre,$uid;
	if($type) $ssql =" AND component ='$type'";
	$sql = "SELECT * FROM  {$tablepre}channel WHERE uid='$uid' $ssql"; //分类
	$result=mysql_query($sql); 
	while($query = mysql_fetch_array($result,MYSQL_ASSOC)) {
		if($selected ==$query['id']) $query['selected']='selected';
		if($query['id'] !=  $cat_id ){
			$res[]=$query;
		}
		
	}
	if(!is_array($res)) return '无分类[<a href="admin_channel.php">添加分类</a>]';
	
	$ress =  get_sort($res);
	if(!$ress)return;
	$ress = array_map('get_o',$ress);
	$ress = implode("\n",$ress);
	
	$ress = "<select id=$select_name name=$select_name ><option value=0>==请选择==</option>$ress</select>";
	return $ress;
}
/**
 * 过滤和排序所有分类，返回一个带有缩进级别的数组
 *
 * @access  private
 * @param   int     $cat_id     上级分类ID
 * @param   array   $arr        含有所有分类的数组
 * @param   int     $level      级别
 * @return  void
 */
function cat_options($spec_cat_id, $arr)
{
 
    
        $level = $last_cat_id = 0;
        $options = $cat_id_array = $level_array = array();
      //  $data = read_static_cache('cat_option_static');
       
            while (!empty($arr))
            {
                foreach ($arr AS $key => $value)
                {
                    $cat_id = $value['cat_id'];
                    if ($level == 0 && $last_cat_id == 0)
                    {
                        if ($value['parent_id'] > 0)
                        {
                            break;
                        }

                        $options[$cat_id]          = $value;
                        $options[$cat_id]['level'] = $level;
                        $options[$cat_id]['id']    = $cat_id;
                        $options[$cat_id]['name']  = $value['cat_name'];
                        unset($arr[$key]);

                        if ($value['has_children'] == 0)
                        {
                            continue;
                        }
                        $last_cat_id  = $cat_id;
                        $cat_id_array = array($cat_id);
                        $level_array[$last_cat_id] = ++$level;
                        continue;
                    }

                    if ($value['parent_id'] == $last_cat_id)
                    {
                        $options[$cat_id]          = $value;
                        $options[$cat_id]['level'] = $level;
                        $options[$cat_id]['id']    = $cat_id;
                        $options[$cat_id]['name']  = $value['cat_name'];
                        unset($arr[$key]);

                        if ($value['has_children'] > 0)
                        {
                            if (end($cat_id_array) != $last_cat_id)
                            {
                                $cat_id_array[] = $last_cat_id;
                            }
                            $last_cat_id    = $cat_id;
                            $cat_id_array[] = $cat_id;
                            $level_array[$last_cat_id] = ++$level;
                        }
                    }
                    elseif ($value['parent_id'] > $last_cat_id)
                    {
                        break;
                    }
                }

                $count = count($cat_id_array);
                if ($count > 1)
                {
                    $last_cat_id = array_pop($cat_id_array);
                }
                elseif ($count == 1)
                {
                    if ($last_cat_id != end($cat_id_array))
                    {
                        $last_cat_id = end($cat_id_array);
                    }
                    else
                    {
                        $level = 0;
                        $last_cat_id = 0;
                        $cat_id_array = array();
                        continue;
                    }
                }

                if ($last_cat_id && isset($level_array[$last_cat_id]))
                {
                    $level = $level_array[$last_cat_id];
                }
                else
                {
                    $level = 0;
                }
            }
           
        
        $cat_options[0] = $options;
   

    if (!$spec_cat_id)
    {
        return $options;
    }
    else
    {
        if (empty($options[$spec_cat_id]))
        {
            return array();
        }

        $spec_cat_id_level = $options[$spec_cat_id]['level'];

        foreach ($options AS $key => $value)
        {
            if ($key != $spec_cat_id)
            {
                unset($options[$key]);
            }
            else
            {
                break;
            }
        }

        $spec_cat_id_array = array();
        foreach ($options AS $key => $value)
        {
            if (($spec_cat_id_level == $value['level'] && $value['cat_id'] != $spec_cat_id) ||
                ($spec_cat_id_level > $value['level']))
            {
                break;
            }
            else
            {
                $spec_cat_id_array[$key] = $value;
            }
        }
        $cat_options[$spec_cat_id] = $spec_cat_id_array;

        return $spec_cat_id_array;
    }
}

?> 
